import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class asdf here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class StickmanWorld extends World
{
    private Stickman stickman;
    private fondo f1;
    private fondo f2;
    private int num1;
    private int num2;
    private int num3;
    private int distancia;
    private int dis;
    private Vida vida;
    private Energia energia;
    private Letrero letrero1;
    private Letrero letrero2;
    private Oxigeno oxigeno;
    private Animaciones oxigeno1;
    private Animaciones energia1;
    private Animaciones vida1;
    private int nivel;
    private int Puntos;
    private int frecuencia;//Numeo que determina que tan frecuente aparesen los enemigos

    //private String numPuntos;
    /**
     * Constructor for objects of class asdf.
     * 
     */
    public StickmanWorld()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(600, 400, 1,false); 
        generaMundo();
        num1=0;
        num2=0;
        num3=0;
        distancia=0;
        dis=0;
        nivel=1;
        Puntos=0;
        frecuencia=0;

    }

    public void act(){           
        num1++;
        dis++;      
        if(dis==5){dis=0;distancia++;creaLetrero(distancia,1);}

        if(num1==150||num1==250){
            addObject(new Piranas(),this.getWidth()+30,Greenfoot.getRandomNumber(200)+100);          
        }
        if(num1==300){
            addObject(new Pulpos(),  this.getWidth()+30, Greenfoot.getRandomNumber(200)+100); 
            int tesoro=Greenfoot.getRandomNumber(5);
            if(tesoro==1){addObject(new Tesoros(),this.getWidth()+30,384);}
            num1=0;
        }          
        if(num1==50||num1==250||num1==150){      
            creaMonedas();
        }
        if(nivel!=1){
            num2++;
            if(num2==700){num2=0; int provavilidad=Greenfoot.getRandomNumber(2); if(provavilidad==1){addObject(new Ballenas(),this.getWidth()+200,Greenfoot.getRandomNumber(125)+95);} }
            if(num2==150||num2==200||num2==300||num2==400){creaMedusas();}
        }
        if(nivel==3){
            num3++;
            if(num3==300){num3=0; addObject(new Axolotl(),this.getWidth()+60,Greenfoot.getRandomNumber(100)+200);}       
        }
        if(distancia==999){this.nexLevel();distancia=0;}
        if(Puntos==50){
            removeObject(energia);
            removeObject(energia1);
            energia=new Energia();
            addObject(energia,189,18); 
            energia1 = new Animaciones(0);
            addObject(energia1,189,18);        
        }
        if(nivel==4){Greenfoot.stop();}       
    }

    public void generaMundo(){

        f1=new fondo(1,(getWidth()/2),(getHeight()/2),1);
        addObject(f1,(getWidth()/2),(getHeight()/2));
        f2=new fondo(2,950,(getHeight()/2),1);
        addObject(f2,950,(getHeight()/2));

        oxigeno=new Oxigeno();
        addObject(oxigeno,62,18);
        oxigeno1 = new Animaciones(0);
        addObject(oxigeno1,62,18);

        vida=new Vida();         
        addObject(vida,320,18);         
        vida1 = new Animaciones(0);
        addObject(vida1,320,18); 

        energia=new Energia();
        addObject(energia,189,18); 
        energia1 = new Animaciones(0);
        addObject(energia1,189,18);

        Agua agua=new Agua();
        addObject(agua,300,57);

        stickman=new Stickman();
        addObject(stickman,100,200);   

        addObject(new Barco(),Greenfoot.getRandomNumber(290)+10,Greenfoot.getRandomNumber(5)+37);   
        addObject(new Barco(),Greenfoot.getRandomNumber(290)+290,Greenfoot.getRandomNumber(5)+37);   
        letrero1=new Letrero(""+0);
        letrero2=new Letrero(""+0);

        addObject(new Animaciones(1),446,17);
        addObject(letrero1,446,17);
        addObject(new Animaciones(2),556,17);       
        addObject(letrero2,556,17);

    }

    public void ReduceAumentaEnergia(boolean opcion){//true reduse false aumenta
        if(opcion==true){energia.reduce(1);} 
        if(opcion==false){energia.aumenta();} 
    }

    public Vida getVida(){
        return vida;
    }

    public void aumentaO(int elimina){     
        oxigeno.aumenta();
        energia.reduce(2); 
    }

    public void ReduceVida(int opcion){
        if(opcion==1)
            vida.reduceVida(1);//Reduce la vida progresivamente, eel 1 representa la reduccion, 0 para la reduccion
        if(opcion==2)
            vida.marcaDaño();//Marca un daño    
    }

    public void StickmanMuere(){
        addObject(new Animaciones(5),(getWidth()/2),(getHeight()/2));Greenfoot.stop();
    }

    public void creaLetrero(int numPuntos,int num){
        if(num==1){
            removeObject(letrero1);   
            letrero1=new Letrero(""+numPuntos);   
            addObject(letrero1,446,17);    
        }   
        if(num==2){
            Puntos=Puntos+numPuntos;
            removeObject(letrero2);   
            letrero2=new Letrero(""+Puntos);   
            addObject(letrero2,556,17); 
        }  
    }

    public void nexLevel(){
        nivel++;
        addObject(new Barco(),Greenfoot.getRandomNumber(290)+10,Greenfoot.getRandomNumber(5)+37);   
        addObject(new Barco(),Greenfoot.getRandomNumber(290)+290,Greenfoot.getRandomNumber(5)+37);          
    }

    public void creaMonedas(){

        int aumento=700;
        int coordenadaEnX=Greenfoot.getRandomNumber(220);
        int numeroDeMonedas= Greenfoot.getRandomNumber(3)+2;
        int incremento=0;         
        while(incremento!= numeroDeMonedas){
            addObject(new Monedas(),aumento,coordenadaEnX+81);
            aumento=aumento+25;
            incremento++;
        }    
    }

    public void creaMedusas(){

        int aumento=700;
        int coordenadaEnX=Greenfoot.getRandomNumber(220);
        int numeroDeMonedas= Greenfoot.getRandomNumber(4)+1;
        int incremento=0;         
        while(incremento!= numeroDeMonedas){
            addObject(new Medusas(),aumento,coordenadaEnX+81);
            aumento=aumento+25;
            int aux=Greenfoot.getRandomNumber(3);
            if(aux==1){coordenadaEnX=coordenadaEnX+20;}else{if(aux==2){coordenadaEnX=coordenadaEnX-20;}}
            incremento++;
        }        
    }

    public void AumentaBurbujas(){
        oxigeno.aumenta();               
    }
    public void creaNuevasBarrasDeEnergia(int tipo){//1 oxigeno 2 vida 3 energia
       if(tipo==1){
           removeObject(oxigeno);
           removeObject(oxigeno1);
        oxigeno=new Oxigeno();
        addObject(oxigeno,62,18);
        oxigeno1 = new Animaciones(0);
        addObject(oxigeno1,62,18);
    }
    if(tipo==1){
        removeObject(vida);
         removeObject(vida1);
        vida=new Vida();         
        addObject(vida,320,18);         
        vida1 = new Animaciones(0);
        addObject(vida1,320,18); 
    }
    if(tipo==1){
         removeObject(energia);
          removeObject(energia1);
        energia=new Energia();
        addObject(energia,189,18); 
        energia1 = new Animaciones(0);
        addObject(energia1,189,18);
    }
    
    
    }
}